package com.foxnicweb.app.proxy.patent;

import org.springframework.web.bind.annotation.RequestMapping;
import org.github.foxnic.web.proxy.api.APIProxy;
import org.github.foxnic.web.proxy.FeignConfiguration;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.cloud.openfeign.FeignClient;
import com.foxnicweb.app.domain.patent.UserMapping;
import com.foxnicweb.app.domain.patent.UserMappingVO;
import java.util.List;
import com.github.foxnic.api.transter.Result;
import com.github.foxnic.dao.data.PagedList;
import com.foxnicweb.app.proxy.ServiceNames;

/**
 * <p>
 * 与对方系统的账户对照关系 控制器服务代理
 * </p>
 * @author 李方捷 , leefangjie@qq.com
 * @since 2023-04-19 10:25:35
 */
@FeignClient(value = ServiceNames.PATENT, contextId = UserMappingServiceProxy.API_CONTEXT_PATH, configuration = FeignConfiguration.class)
public interface UserMappingServiceProxy {

    /**
     * 基础路径 , service-patent
     */
    public static final String API_BASIC_PATH = "service-patent";

    /**
     * API 上下文路径 , pat-user-mapping
     */
    public static final String API_CONTEXT_PATH = "pat-user-mapping";

    /**
     * API 基础路径 , 由 API_BASIC_PATH 和 API_CONTEXT_PATH 两部分组成
     */
    public static final String API_PREFIX = "/" + API_BASIC_PATH + "/" + API_CONTEXT_PATH + "/";

    /**
     * 添加与对方系统的账户对照关系
     */
    public static final String INSERT = API_PREFIX + "insert";

    /**
     * 删除与对方系统的账户对照关系
     */
    public static final String DELETE = API_PREFIX + "delete";

    /**
     * 批量删除与对方系统的账户对照关系
     */
    public static final String DELETE_BY_IDS = API_PREFIX + "delete-by-ids";

    /**
     * 更新与对方系统的账户对照关系
     */
    public static final String UPDATE = API_PREFIX + "update";

    /**
     * 保存与对方系统的账户对照关系
     */
    public static final String SAVE = API_PREFIX + "save";

    /**
     * 获取单个与对方系统的账户对照关系
     */
    public static final String GET_BY_ID = API_PREFIX + "get-by-id";

    /**
     * 获取多个与对方系统的账户对照关系
     */
    public static final String GET_BY_IDS = API_PREFIX + "get-by-ids";

    /**
     * 查询与对方系统的账户对照关系
     */
    public static final String QUERY_LIST = API_PREFIX + "query-list";

    /**
     * 分页查询与对方系统的账户对照关系
     */
    public static final String QUERY_PAGED_LIST = API_PREFIX + "query-paged-list";

    /**
     * 添加与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.INSERT)
    Result insert(@RequestParam(name = "userMappingVO") UserMappingVO userMappingVO);

    /**
     * 删除与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.DELETE)
    Result deleteById(@RequestParam(name = "id") Long id);

    /**
     * 批量删除与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.DELETE_BY_IDS)
    Result deleteByIds(@RequestParam(name = "ids") List<Long> ids);

    /**
     * 更新与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.UPDATE)
    Result update(@RequestParam(name = "userMappingVO") UserMappingVO userMappingVO);

    /**
     * 更新与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.SAVE)
    Result save(@RequestParam(name = "userMappingVO") UserMappingVO userMappingVO);

    /**
     * 获取与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.GET_BY_ID)
    Result<UserMapping> getById(@RequestParam(name = "id") Long id);

    /**
     * 获取多个与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.GET_BY_IDS)
    Result<List<UserMapping>> getByIds(@RequestParam(name = "ids") List<Long> ids);

    /**
     * 查询与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.QUERY_LIST)
    Result<List<UserMapping>> queryList(@RequestParam(name = "sample") UserMappingVO sample);

    /**
     * 分页查询与对方系统的账户对照关系
     */
    @RequestMapping(UserMappingServiceProxy.QUERY_PAGED_LIST)
    Result<PagedList<UserMapping>> queryPagedList(@RequestParam(name = "sample") UserMappingVO sample);

    /**
     * 控制器类名
     */
    public static final String CONTROLLER_CLASS_NAME = "com.foxnicweb.app.patent.controller.UserMappingController";

    /**
     * 统一的调用接口，实现在单体应用和微服务应用下的无差异调用
     */
    public static UserMappingServiceProxy api() {
        return APIProxy.get(UserMappingServiceProxy.class, CONTROLLER_CLASS_NAME);
    }
}
